/**
 * 路由处理模块（登录注册）
 */
// 导入数据库操作模块
const db = require('../db/index');
const bcryptjs = require('bcryptjs');
// 导入生成Token的包
const jwt = require('jsonwebtoken')
// 导入全局配置文件
const config = require('../config')
// 注册新用户的处理函数
function regUser(req, res) {
  let userInfo = req.body;
  // 定义SQL语句，查询用户名是否被占用
  const sqlStr = `select * from ev_users where username=?`;
  db.query(sqlStr, [userInfo.username], (err, results) => {
    console.log('results：22', results) // 返回的是一个数组
    // Sql执行失败
    if (err) {
      return res.cc(err);
    };
    // 判断用户名是否被占用
    if (results.length > 0) {
      return res.cc('用户名被占用，请更换其他用户名');
    };
    // 用户名可用,对密码进行加密,调用bcrypt.hashSync()方法
    userInfo.password = bcryptjs.hashSync(userInfo.password, 10);
    // 插入新用户
    let insertSql = `insert into ev_users set ?`
    db.query(insertSql, { username: userInfo.username, password: userInfo.password }, (err, results) => {
      console.log('results：36', results) // 返回的是一个对象
      if (err) {
        return res.cc(err)
      };
      if (results.affectedRows !== 1) {
        res.cc('注册失败');
        return
      } else {
        res.cc('注册成功', 1);
        return
      };
    })

  })
};
// 登录
function login(req, res) {
  let userInfo = req.body
  console.log(userInfo);
  let sqlStr = `select * from ev_users where username=?`
  db.query(sqlStr, userInfo.username, (err, results) => {
    console.log('results：57', results) // 返回的是一个数组
    if (err) return res.cc(err);
    if (results.length !== 1) return res.cc('登录失败');
    const compareResult = bcryptjs.compareSync(userInfo.password, results[0].password)
    if (!compareResult) return res.cc('登录失败')
    // 登录成功
    const user = { ...results[0], password: '', user_pic: '' }
    // 对用户信息进行加密，生成Token字符串
    const tokenStr = jwt.sign(user, config.secret, { expiresIn: config.expiresIn })
    res.send({
      status: 1,
      msg: '登录成功',
      token: 'Bearer ' + tokenStr
    })


  })



};
module.exports = {
  regUser,
  login
};